//导入js工具库  使用里面的merge来对  对象进行合并
import merge from 'lodash/merge'
//封装axios
//1.导入axios
import Axios from "axios";
//2.导出封装的axios
//当外部调用request方法时 需要传入 发送请求的信息
const http = Axios.create({
  //基础路径
  baseURL: 'http://192.168.2.135/api',
  //超时时间
  timeout: 1000 * 30,
  //允许跨域请求时携带cookie
  withCredentials: true,
  //配置为json格式的
  headers: {
    'Content-Type': 'application/json; charset=utf-8'
  },
})

/**
 * 请求拦截
 */
http.interceptors.request.use(config => {
  // config.headers['token'] = Vue.cookie.get('token') // 请求头带上token
  return config
}, error => {
  return Promise.reject(error)
})

/**
 * 响应拦截
 */
http.interceptors.response.use(response => {
  // if (response.data && response.data.code === 401) { // 401, token失效
  //   clearLoginInfo()
  //   router.push({ name: 'login' })
  // }
  return response
}, error => {
  return Promise.reject(error)
})

/**
 * get请求参数处理
 * @param {*} params 参数对象
 * @param {*} openDefaultParams 是否开启默认参数?
 */
export function adornParams(params = {}, openDefaultParams = true) {
  let defaults = {
    't': new Date().getTime()
  }
  return openDefaultParams ? merge(defaults, params) : params
}

/**
 * post请求数据处理
 * @param {*} data 数据对象
 *  json: 'application/json; charset=utf-8'
 */
export function adornData(data = {}) {
  return JSON.stringify(data)
}

export function request(config) {
  return http(config)
}

